// 方法定义中的泛型
// @author 风杨
// @date 22-9-8 下午4:26
// @see <a href="yueny09@163.com">mailTo: yueny09@163.com</a>
//

pub fn methodWithSyn2(){
    println!("methodWithSyn2");

    let po = Point2{
        x:1.0, y: 6.0
    };
    println!("Point.x={:?}", po);
    println!("Point.xyz={:?}", po.distance_from_origin());
}

#[derive(Debug)]
struct Point2<T>{
    x: T,
    y: T
}

/*
Point<f32> 类型会有一个方法 distance_from_origin，
而其他 T 不是 f32 类型的 Point<T> 实例则没有定义此方法。
*/
impl Point2<f32> {
    fn distance_from_origin(&self) -> f32 {
        (self.x.powi(2) + self.y.powi(2)).sqrt()
    }
}